//
//  XLStatusOriginalView.swift
//  XLVeibo
//
//  Created by macbook on 16/6/27.
//  Copyright © 2016年 buWangChuXing. All rights reserved.
//

import UIKit
import SnapKit


class XLStatusOriginalView: UIView {

    var originalViewBottomConstraint: Constraint?
    
    //设置数据
    var status:XLStatus?{
    
        didSet{
        
            //用户名称
            nameLabel.text = status?.user?.name
            
            //用户头像
            iconImage.sd_setImageWithURL(NSURL(string:(status?.user?.profile_image_url)!), placeholderImage: UIImage(named: "avatar_default_big"))
            
            //时间
            timelabel.text = status?.vbTime
            //微博内容
            contentLabel.attributedText = status?.textAttr
     
            //Vip等级vip
            expiredImageView.image = status?.user?.mbrankImage
            
            //认证
            rbImageView.image = status?.user?.varifiedImage
            
            //来源
            sourceLabel.attributedText = status?.sourceAttr
            
            //更改约束之前先卸载
            originalViewBottomConstraint?.uninstall()
            
            //代表有配图
            if status?.pic_urls?.count > 0 {
                
                //显示配图
                prictureView.hidden = false
                //赋值
                prictureView.pic_urls = status?.pic_urls
                
                //更新约束
                self.snp_updateConstraints(closure: { (make) in
                  
                    originalViewBottomConstraint = make.bottom.equalTo(prictureView.snp_bottom).offset(OriginalMargin).constraint
                    
                })
             //没有配图
            }else
            {
                prictureView.hidden = true
                
                //更新约束
                self.snp_updateConstraints(closure: { (make) in
                    
                    originalViewBottomConstraint = make.bottom.equalTo(contentLabel).offset(OriginalMargin).constraint
                })
                
            }
          
        }
    }
    
    
    func getWeiBoAttr(text: String) -> NSMutableAttributedString {
        
        //富文本
        let resultAttr = NSMutableAttributedString(string: text)
        //定义一个保存模型的数组
        var matchArray:[XLMatchResult] = [XLMatchResult]()
        
        //通过正则匹配结果
        (text as NSString).enumerateStringsMatchedByRegex("\\[[a-zA-Z0-9\\u4e00-\\u9fa5+\\]") { (count, string, range, _) in
            
            //字典转模型保存数组
            let matchres = XLMatchResult(string: (string.memory as! String), range: range.memory)
            
            //保存数据
            matchArray.append(matchres)
        }
        
        //倒叙遍历
        for macth in matchArray.reverse() {
            
            let emoticon = XLEmoticonShardTools.shardTools.getSearchEmoticon(macth.string)
            
            //文本附件
            let att = NSTextAttachment()
            let path = emoticon?.path ?? ""
            let png = emoticon?.png ?? ""
            let name = path + png
            
            // 设置image
            att.image = UIImage(named: name, inBundle: XLEmoticonShardTools.shardTools.emoticonBundle, compatibleWithTraitCollection: nil)
            // 行高
            let lineHeight = UIFont.systemFontOfSize(15).lineHeight
            // 设置bounds
            att.bounds = CGRect(x: 0, y: -4, width: lineHeight, height: lineHeight)
            
            let attr = NSAttributedString(attachment: att)
            resultAttr.replaceCharactersInRange(macth.range, withAttributedString: attr)
            
        }
        
        return resultAttr
        
    }
    
//    /*
//     - 微博时间业务逻辑需求
//     - 如果是今年
//     - 如果是今天
//     -  如果小于60秒 显示格式: 刚刚
//     -  如果 s>=60 && s < 60 * 60  显示格式:xx分钟前
//     -  如果 s>= 60*60  显示格式: xx小时前
//     - 如果是昨天
//     -  2016-06-29 12:12:12  显示格式: 昨天 12:12
//     - 如果是其他
//     -  2016-06-12 13:13:13  显示格式: 06月12日 13:13
//     - 如果不是今年
//     - 2015-05-05 10:10:10 显示格式: 2015年05月05日 10:10
//     */
//
//    //处理微博时间
//    func getWbTimeStr(creatAt:String)->String{
//    
//        //时间格式
//        let df = NSDateFormatter()
//        //格式 Thu Jun 30 11:21:04 +0800 2016    ---- +0800 时区 z
//        df.dateFormat = "EEE MMM dd HH:mm:ss z yyy"
//        //设置地区
//        df.locale = NSLocale(localeIdentifier: "en_US")
//        
//        //微博时间
//        let wbDate = df.dateFromString(creatAt)!
//        //判断今年
//        let isThisYear:Bool = getWBIsThisYear(wbDate)
//        
//        //今年
//        if isThisYear {
//            
//            //日历类
//            let calendar = NSCalendar.currentCalendar()
//            //如果是今天
//            if calendar.isDateInToday(wbDate) {
//                
//                //秒数差值
//                let s = NSDate().timeIntervalSinceDate(wbDate)
//                if s < 60 {
//                    
//                    return "刚刚"
//                }else if s >= 60 && s < 60 * 60 {
//                
//                    //显示格式
//                    return "\(Int(s/60))分钟前"
//                
//                }else{
//                
//                    return "\(Int(s/3600))小时前"
//                }
//                
//                
//            }else if calendar.isDateInYesterday(wbDate){
//            //昨天显示格式 昨天 12:12
//            
//                df.dateFormat = "昨天 HH:mm"
//                return df.stringFromDate(wbDate)
//            }else{
//            
//                //其他 显示格式  06月12日 13:13
//                df.dateFormat = "MM月dd日 HH:mm"
//                return df.stringFromDate(wbDate)
//            
//            }
//        }else{
//        
//            //不是今年显示格式: 2015年05月05日 10:10
//             df.dateFormat = "yyyy年MM月dd日 HH:mm"
//        let result = df.stringFromDate(wbDate)
//            
//            return result
//        }
//        
//    }
//    
//    
//    //判断是否是今年
//    func getWBIsThisYear(wbDate:NSDate)->Bool{
//    
//        let df = NSDateFormatter()
//        //设置地区
//        df.locale = NSLocale(localeIdentifier: "en_US")
//        
//        //格式
//        df.dateFormat = "yyyy"
//        //微博时间
//        let wbTime = df.stringFromDate(wbDate)
//        //当前时间
//        let currentTime = df.stringFromDate(NSDate())
//        //代表今年
//        if wbTime == currentTime {
//            
//            return true
//        }else
//        {
//            return false
//        }
//        
//    }
    
   
    override init(frame: CGRect) {
        
        super.init(frame: frame)
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    
    //设置视图
    
    private func setupUI(){
       backgroundColor = UIColor.whiteColor()
        //添加
        addSubview(iconImage)
        addSubview(nameLabel)
        addSubview(expiredImageView)
        addSubview(timelabel)
        addSubview(sourceLabel)
        addSubview(rbImageView)
        addSubview(contentLabel)
        addSubview(prictureView)
        
        //头像
        iconImage.snp_makeConstraints { (make) in
            
            make.top.left.equalTo(self).offset(OriginalMargin)
            make.size.equalTo(CGSize(width: 35, height: 35))
        }
        
        //名称
        nameLabel.snp_makeConstraints { (make) in
            
            make.top.equalTo(iconImage.snp_top)
            make.left.equalTo(iconImage.snp_right).offset(OriginalMargin)
        }
        
        
        //vip
        expiredImageView.snp_makeConstraints { (make) in
            
            make.centerY.equalTo(nameLabel.snp_centerY)
            make.left.equalTo(nameLabel.snp_right).offset(OriginalMargin)
        }
        
        //发布微博时间
        timelabel.snp_makeConstraints { (make) in
            
           make.left.equalTo(nameLabel.snp_left)
           make.bottom.equalTo(iconImage.snp_bottom)
        }
        
        //来源
        sourceLabel.snp_makeConstraints { (make) in
            
            make.centerY.equalTo(timelabel.snp_centerY)
            make.left.equalTo(timelabel.snp_right).offset(OriginalMargin)
        }
        
        //vip认证
        rbImageView.snp_makeConstraints { (make) in
            
            make.centerY.equalTo(iconImage.snp_bottom)
            make.centerX.equalTo(iconImage.snp_right)
        }
        
        
        //内容显示
        contentLabel.snp_makeConstraints { (make) in
            
            make.top.equalTo(iconImage.snp_bottom).offset(OriginalMargin)
            make.left.equalTo(iconImage.snp_left)
        }
        
        
        prictureView.snp_makeConstraints { (make) in
            
            //因为大小需要根据网络图片的多少来判断，所以这个约束添加到自身
//           make.size.equalTo(CGSize(width: 100, height: 100))
            make.top.equalTo(contentLabel.snp_bottom).offset(OriginalMargin)
            make.left.equalTo(contentLabel)
        
        }
        
        //约束自己
        self.snp_makeConstraints { (make) in
            
        originalViewBottomConstraint = make.bottom.equalTo(prictureView.snp_bottom).offset(OriginalMargin).constraint
        
        }
        
        //设置临时数据
        
    }
    
    
    
    
    
    //懒加载
    //头像
    private lazy var iconImage:UIImageView = UIImageView(imageName: "avatar_default_big")
    
    //名字
    private lazy var nameLabel:UILabel = UILabel(textColor: UIColor.darkGrayColor(), textFont: 15)
    
    //Vip用户等级
    private lazy var expiredImageView:UIImageView = UIImageView(imageName: "common_icon_membership_expired")
    
    //时间
    private lazy var timelabel:UILabel = UILabel(textColor: ThemeColor, textFont: 10)
    
    //来源
    private lazy var sourceLabel:UILabel = UILabel(textColor: UIColor.grayColor(), textFont: 10)
    
    //认证
    private lazy var rbImageView:UIImageView = UIImageView(imageName: "avatar_vgirl")
    
    //内容显示的label
    private lazy var contentLabel:UILabel = UILabel(textColor: UIColor.blackColor(), textFont: 15, labelWith: KScreenW - 2 * OriginalMargin)
    
    //配图
    private lazy var prictureView:XLPictureView  = XLPictureView()

}







